package marja;

import java.util.Calendar;
import java.util.GregorianCalendar;

import steffen.WSVException;

/**
 * Klasse für den Leihgegenstand Handtuch erbt von Gegenstand
 * 
 * @author Marja Ahlbrand
 *
 */
public class Handtuch extends Gegenstand
{
    /**
     * Handtücher werden pro Tag abgerechnet
     */
    double preisProTag;
    long tage;
    
    /**
     * in dem Attribut wird nach dem Zurückgeben das Datum gespeichert 
     * ab wann der Gegenstand wieder zum Verleih zur Verfügung steht
     */
    Calendar wiederZuVerleihen = new GregorianCalendar();

    
    /**
     * Erzeugt ein Objekt vom Typ Handtuch
     * @param kundenindex
     * @param Ausleihdatumdatum 
     * @param count entspricht der Anzahl der ausgeliehenden Handtücher
     * @throws WSVException 
     */
    public Handtuch(int kundenindex, String datum, int count)
    {
        super(kundenindex, datum, count);
        super.bezeichnung = "Handtuch";
        super.zusatzGebühr = 1;
        preisProTag=2;
    }

    
    /**
     * Gibt den ein Calender Objekt zurück in dem steht wann ein Handtuch wieder zu verleihen ist
     * @return 
     */
    public Calendar getWiederZuVerleihen()
    {
        return wiederZuVerleihen;
    }
    
    /**
     * Methode wird beim Zurückgeben eines Handtuchs ausgeführt
     * Das Datum datumBis und das Datum wiederZuVerleihen wird gesetzt
     * in der Methode werden die Methoden datumsDiff() und kalkuliereKosten() aufgerufen
     */
    public void zurückgeben(String datum)
    {
        int[] datumArray = super.datumVerarbeiten(datum);

        datumBis = new GregorianCalendar();
        datumBis.set(datumArray[0], datumArray[1], datumArray[2],
                datumArray[3], datumArray[4]);
        super.datumsDiff();
        kalkuliereKosten();
        wiederZuVerleihen.set(datumArray[0], datumArray[1],
                (datumArray[2] + 1), 10, 00); // ein Handtuch ist erst am
                                              // Folgetag nach 10Uhr wieder zu
                                              // verleihen
    }

    /**
     * kalkuliere Kosten wird von der Methode zurückgeben aufgerufen und berechnet die Gebühr
     * für das Handtuch- Objekt, wobei hier ein Preis für jeden angefangenen Tag zugrunde gelegt wird
     * + eine Zusatzgebühr von 1€ pro Handtuch für das Waschen
     * das Ergebnis wird in der Variable endpreis gespeichert
     */
    protected void kalkuliereKosten()
     {
         this.tage = (super.getStunden()/24);
        
         if(super.getStunden()%24 >0)
         {
             tage+=1;
         }
        
         super.endpreis = ((tage*preisProTag) + zusatzGebühr)*count;
    
     }
    
    
    /**
     * prüft ob ein übergebenens Datum nach dem Datum wiederZuVerleihen liegt
     * @param datum
     * @return true wenn das übergebene Datum vor dem Datum WiederZuVerleihen liegt, sonnst false
     * @throws WSVException 
     */
    public boolean wiederVerleihbar(String datum) throws WSVException
    {
        int[] datumArray = datumVerarbeiten(datum);
        GregorianCalendar datumTemp= new GregorianCalendar();
        datumTemp.set(datumArray[0], datumArray[1], datumArray[2], datumArray[3], datumArray[4]);
        return wiederZuVerleihen.before(datumTemp);
    }
    
    /**
     * prüft ob das aktuelle Datum nach dem Datum wiederZuVerleihen liegt
     * @return true wenn das aktuelle Datum vor dem Datum WiederZuVerliehen liegt, sonnst false
     */
    public boolean wiederVerleihbar()
    {
        GregorianCalendar datumTemp= new GregorianCalendar();
        return wiederZuVerleihen.before(datumTemp);
    }

}
